home *** CD-ROM | disk | FTP | other *** search
/ Delphi 2 - Developers' Solutions / Delphi 2 Developers' Solutions.iso / dds / chap07 / howto08 / tabdrive / uiform.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1995-12-10  |  1.8 KB  |  78 lines

  1. unit Uiform;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, Grids, DBGrids, DB, DBTables, Tabs,
  8.   Scanners;
  9.  
  10. type
  11.   TProjectForm = class(TForm)
  12.     AreaTabSet: TTabSet;
  13.     ProjectDataSource: TDataSource;
  14.     AreaTable: TTable;
  15.     ProjectTable: TTable;
  16.     ProjectDBGrid: TDBGrid;
  17.     AreaDataSource: TDataSource;
  18.     ProjectTableAREA_ID: TSmallintField;
  19.     ProjectTablePROJECT_ID: TSmallintField;
  20.     ProjectTablePROJECT_TITLE: TStringField;
  21.     procedure FormCreate(Sender: TObject);
  22.     procedure AreaTabSetChange(Sender: TObject; NewTab: Integer;
  23.       var AllowChange: Boolean);
  24.   private
  25.     { Private declarations }
  26.   public
  27.     { Public declarations }
  28.   end;
  29.  
  30. var
  31.   ProjectForm: TProjectForm;
  32.  
  33. implementation
  34.  
  35. {$R *.DFM}
  36.  
  37. procedure LoadTabsScannerAction( TheAreaTable: TTable ); far;
  38. begin
  39.   ProjectForm.AreaTabSet.Tabs.Add(
  40.     TheAreaTable.FieldByName( 'AREA_NAME' ).AsString
  41.   );
  42. end;
  43.  
  44. procedure TProjectForm.FormCreate(Sender: TObject);
  45. var
  46.   AreaTableScanner: TTableActionScanner;
  47. begin
  48.  
  49.   { Create table scanner object on Area table. }
  50.   AreaTableScanner := TTableActionScanner.Create(
  51.     AreaTable,
  52.     LoadTabsScannerAction
  53.   );
  54.   { Scan through area table and load area names into tabs. }
  55.   AreaTableScanner.Execute;
  56.   { Dispose of the scanner object. }
  57.   AreaTableScanner.Free;
  58.  
  59.   { Make sure Area table and AreaTabSet are synchronized. }
  60.   if AreaTabSet.Tabs.Count > 0 then
  61.   begin
  62.     { Area table is not empty. Tabs loaded by scanner.}
  63.     AreaTabSet.TabIndex := 0;
  64.   end;
  65.  
  66. end;
  67.  
  68. procedure TProjectForm.AreaTabSetChange(Sender: TObject; NewTab: Integer;
  69.   var AllowChange: Boolean);
  70. begin
  71.  
  72.   if not AreaTable.FindKey( [ NewTab ] ) then
  73.     AllowChange := False;
  74.  
  75. end;
  76.  
  77. end.
  78.